package main

import "fmt"

// 定义一个Animal的接口 Animal中定义两个方法 分别是setName和getName

// 新定义两个接口
type Ainterface interface{
	setName(string)
}
type Binterface interface{
	GetName() string
}

type Animal interface{  //接口的嵌套
	Ainterface
	Binterface
}

// 定义一个Dog
type Dog struct{
	Name string
}

//定义一个dog结构体实现接口方法 接收者是指针类型
func (d *Dog) setName(name string){
	d.Name = name
}
func (d *Dog) GetName() string{
	return d.Name
}
func main(){
	// Dog 实现Animal的接口
	// 实例化Dog结构体
	// 指针类型的接收者实例化的结构体方法
	d :=&Dog{
		Name:"小黑",
	}
	// 把dog接口体变量赋值给Animal接口
	var d1 Animal =d
	// Animal接口变量d1可以调用interfaceB的方法
	fmt.Println(d1.GetName())
}